Cloud infrastructure services, also known as Infrastructure as a Service (IaaS), deliver computer infrastructure—typically a platform virtualization environment—as a service, along with raw (block) storage and networking. Rather than purchasing servers, software, data-center space or network equipment, clients instead buy those resources as a fully outsourced service. A powerful abstraction supported by cloud computing is resource level abstraction by means of virtualizing the underlying physical resources. In this paradigm, users are relieved of the trouble of owning and managing physical computing resources. Instead, users can request computing resources from cloud providers using the provider's exposed APIs. One such example is Amazon's EC2, through which users can gain access to the desired computing resources. The users do not have any control over the physical resources, as the cloud provider provides a set of virtualized resources, such as servers/CPUs, storage and network bandwidth. In such a computing model, users are required to prepare the virtual images that will host the applications, known as virtual appliances. The benefit of such a model is that users are unaware of the underlying physical computing resources and do not need to manage the physical resources. The user's focus is on managing applications on top of these virtual resources. Due to the sharing of a common set of physical resources that are isolated by virtualization technologies, cloud providers can significantly lower the cost of computing resources. However, a key concern of enterprise customers with respect to cloud computing arises due to the uneasiness in moving sensitive data to the cloud. This uneasiness can inhibit enterprises from moving applications to the cloud. In addition, several audit and conformance regulatory policies prevent many applications from utilizing the benefits of cloud computing environments.